home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Belgian Amiga Club - ADF Collection
/
BS1 part 19.zip
/
BS1 part 19
/
Lattice C disk 4.adf
/
Compiler_Headers
/
intuition
/
intuitionbase.h
< prev
next >
Wrap
C/C++ Source or Header
|
1988-10-25
|
12KB
|
348 lines
#ifndef INTUITION_INTUITIONBASE_H
#define INTUITION_INTUITIONBASE_H
/*
** $Filename: intuition/intuitionbase.h $
** $Release: 1.3 $
**
** the IntuitionBase structure and supporting structures
**
** (C) Copyright 1985,1986,1987,1988 Commodore-Amiga, Inc.
** All Rights Reserved
*/
#ifndef EXEC_TYPES_H
#include <exec/types.h>
#endif
#ifndef EXEC_LIBRARIES_H
#include <exec/libraries.h>
#endif
#ifndef INTUITION_INTUITION_H
#include <intuition/intuition.h>
#endif
#ifndef EXEC_INTERRUPTS_H
#include <exec/interrupts.h>
#endif
#ifdef INTUITIONPRIVATE
/* these types and constants are used in the forbidden part of IntuitionBase.
* see below for an explanation that these are NOT supported for your use.
* They will certainly change in subsequent releases, and are provided
* for education, debugging, and information.
*/
/* these are the display modes for which we have corresponding parameter
* settings in the config arrays
*/
#define DMODECOUNT 0x0002 /* how many modes there are */
#define HIRESPICK 0x0000
#define LOWRESPICK 0x0001
#define EVENTMAX 10 /* size of event array */
/* these are the system Gadget defines */
#define RESCOUNT 2
#define HIRESGADGET 0
#define LOWRESGADGET 1
#define GADGETCOUNT 8
#define UPFRONTGADGET 0
#define DOWNBACKGADGET 1
#define SIZEGADGET 2
#define CLOSEGADGET 3
#define DRAGGADGET 4
#define SUPFRONTGADGET 5
#define SDOWNBACKGADGET 6
#define SDRAGGADGET 7
/* jimm: 1/10/86: Intuition Locking */
/* Let me say it again: don't even think about using this information
* in a program.
*/
#define ISTATELOCK 0 /* Intuition() not re-entrant */
#define LAYERINFOLOCK 1 /* dummy lock used to check protocol */
#define GADGETSLOCK 2 /* gadget lists, refresh, flags */
#define LAYERROMLOCK 3 /* (dummy) for lock layerrom */
#define VIEWLOCK 4 /* access to ViewLord */
#define IBASELOCK 5 /* protexts IBase pointers and lists */
#define RPLOCK 6 /* use of IBase->RP */
#define NUMILOCKS 7
/* ======================================================================== */
/* === Intuition Geometric Primitives ===================================== */
/* ======================================================================== */
struct FatIntuiMessage {
struct IntuiMessage;
ULONG PrevKeys;
};
struct IBox {
SHORT Left;
SHORT Top;
SHORT Width;
SHORT Height;
};
struct Point {
SHORT X;
SHORT Y;
};
struct PenPair {
UBYTE DetailPen;
UBYTE BlockPen;
};
/* ======================================================================== */
/* === Gadget Environments ================================================ */
/* ======================================================================== */
/* environment for a whole list of gadgets. note that information for both
* layers of a G00 window are included.
*/
struct GListEnv {
struct Screen *ge_Screen;
struct Window *ge_Window;
struct Requester *ge_Requester;
struct RastPort *ge_RastPort; /* rastport used to render gadget */
struct Layer *ge_Layer; /* layer for gadget (border, if G00)*/
struct Layer *ge_GZZLayer; /* interior layer for G00 windows */
struct PenPair ge_Pens; /* pens for rendering gadget */
struct IBox ge_Domain;
/* window, screen, requester, rel. to window/screen */
struct IBox ge_GZZdims; /* interior window area */
};
/* information for a gadget in its environment. includes relatively
* correct size, container for propgadgets, correct layer for this gadget,
* and back pointers to the environment and gadget itself
*/
struct GadgetInfo {
struct GListEnv *gi_Environ; /* environment for this gadget */
struct Gadget *gi_Gadget; /* gadget this info is for */
struct IBox gi_Box; /* actual dimensions of gadget */
struct IBox gi_Container; /* inner container dimensions */
struct Layer *gi_Layer; /* correct layer for this gadget */
struct IBox gi_NewKnob; /* place to draw new slider knob */
};
#endif /* PRIVATE VALUES */
/* ======================================================================== */
/* === IntuitionBase ====================================================== */
/* ======================================================================== */
/*
* Be sure to protect yourself against someone modifying these data as
* you look at them. This is done by calling:
*
* lock = LockIBase(0), which returns a ULONG. When done call
* UnlockIBase(lock) where lock is what LockIBase() returned.
*/
struct IntuitionBase
/* IntuitionBase should never be directly modified by programs */
/* even a little bit, guys/gals; do you hear me? */
{
struct Library LibNode;
struct View ViewLord;
struct Window *ActiveWindow;
struct Screen *ActiveScreen;
/* the FirstScreen variable points to the frontmost Screen. Screens are
* then maintained in a front to back order using Screen.NextScreen
*/
struct Screen *FirstScreen; /* for linked list of all screens */
ULONG Flags; /* see definitions below */
WORD MouseY, MouseX; /* mouse position relative to View */
ULONG Seconds; /* timestamp of most current input event */
ULONG Micros; /* timestamp of most current input event */
#ifdef INTUITIONPRIVATE
/* The following is a snapshot of the "private" part of
* Intuition's library data. It is included for educational
* use and your debugging only. It is absolutely guaranteed
* that this structure will change from release to release.
*
* So: don't count on any of the values you find here
* don't even think about changing any of these fields
* (that goes for the "supported" fields above, too).
*
* Some work has been done to find the include files
* that these fields depend on.
*
* jimm: 9/10/86.
*/
WORD MinXMouse, MaxXMouse; /* bounded X position for the mouse */
WORD MinYMouse, MaxYMouse; /* bounded Y position for the mouse */
ULONG StartSecs, StartMicros; /* measure double clicks */
/* --------------- base vectors ----------------------------------- */
/* DO MOVE THESE OFFSETS WITHOUT ADJUSTING EQUATES IN IWORK.ASM
* this is automatically handled by standalone program offsets.c
*/
APTR SysBase;
struct GfxBase *GfxBase;
APTR LayersBase;
APTR ConsoleDevice;
/* --------------- Sprite Pointer --------------------------------- */
USHORT *APointer; /* the ActiveGroup pointer sprite definition */
BYTE APtrHeight; /* height of the pointer */
BYTE APtrWidth; /* width in pixels of the pointer (<= 16!) */
BYTE AXOffset, AYOffset; /* sprite offsets */
/* ---------------- Menu Rendering and Operation ------------------ */
USHORT MenuDrawn; /* menu/item/sub number of current display */
USHORT MenuSelected;/* menu/item/sub number of selected (and highlights)*/
USHORT OptionList; /* menu selection */
/* this is the work RastPort used for building item and subitem displays
* you can never count on it being stable, other than that it is
* mostly a copy of the active screen's RastPort.
*/
struct RastPort MenuRPort;
struct TmpRas MenuTmpRas;
struct ClipRect ItemCRect; /* for the item's screen display */
struct ClipRect SubCRect; /* for the subitem's screen display */
struct BitMap IBitMap; /* for the item's planes */
struct BitMap SBitMap; /* for the subitem's planes */
/* ---------------- Input Device Interface ------------------------ */
struct IOStdReq InputRequest;
struct Interrupt InputInterrupt;
/* for dynamically allocated input events */
struct Remember *EventKey;
struct InputEvent *IEvents;
/* for statically "allocated" input events */
#define NUM_IEVENTS 4
SHORT EventCount;
struct InputEvent IEBuffer[NUM_IEVENTS];
/* ---------------- Active Gadget Information --------------------- */
struct Gadget *ActiveGadget;
struct PropInfo *ActivePInfo;
struct Image *ActiveImage;
struct GListEnv GadgetEnv; /* environment of the active gadget */
struct GadgetInfo GadgetInfo;/* specific information for active gadget*/
struct Point KnobOffset; /* position in knob of mouse when selected*/
/* ---------------- Verify Functions Support ---------------------- */
/* hold information about getOK wait(), used for breakVerify() */
struct Window *getOKWindow;
struct IntuiMessage *getOKMessage;
/* ---------------- State Machine --------------------------------- */
USHORT setWExcept, GadgetReturn, StateReturn;
/* ----------- Intuition's Rendering for Gadgets, Titles, ... ----- */
/* This will be allocated on init */
struct RastPort *RP;
struct TmpRas ITmpRas;
struct Region *OldClipRegion; /* locks with RPort */
struct Point OldScroll; /* user's Scroll_X/Y*/
/* ----------- Frame Rendering for Window Size/Drag --------------- */
struct IBox IFrame; /* window frame for sizing/dragging */
SHORT hthick, vthick; /* IFrame thickness */
VOID (*frameChange)(); /* function to change IFrame */
VOID (*sizeDrag)(); /* either ISizeWindow or IMoveWindow */
struct Point FirstPt; /* point from which s/d started */
struct Point OldPt; /* previous point for s/d */
/* ---------------- System Gadget Templates ------------------------ */
struct Gadget *SysGadgets[RESCOUNT][GADGETCOUNT];
struct Image *CheckImage[RESCOUNT], *AmigaIcon[RESCOUNT];
/* ---------------- Window Drag Rendering ------------------------- */
#ifdef OLDPATTERN
USHORT apattern[3], bpattern[4];
#else
USHORT apattern[8], bpattern[4];
#endif
/* --- Preferences Section ---------------------------------------------- */
USHORT *IPointer; /* the INTUITION pointer default sprite definition */
BYTE IPtrHeight; /* height of the pointer */
BYTE IPtrWidth; /* width in pixels of the pointer (<= 16!) */
BYTE IXOffset, IYOffset; /* sprite offsets */
LONG DoubleSeconds, DoubleMicros; /* for testing double-click timeout */
/* ---------------- Border Widths --------------------------------- */
BYTE WBorLeft[DMODECOUNT];
BYTE WBorTop[DMODECOUNT];
BYTE WBorRight[DMODECOUNT];
BYTE WBorBottom[DMODECOUNT];
BYTE BarVBorder[DMODECOUNT];
BYTE BarHBorder[DMODECOUNT];
BYTE MenuVBorder[DMODECOUNT];
BYTE MenuHBorder[DMODECOUNT];
USHORT color0;
USHORT color1;
USHORT color2;
USHORT color3;
USHORT color17;
USHORT color18;
USHORT color19;
struct TextAttr SysFont;
/* WARNING: you can easily wipe out Intuition by modifying this pointer
* or the Preference data pointed to by this!
*/
struct Preferences *Preferences;
/* ----------------- Deferred action queue ---------------------- */
struct DistantEcho *Echoes;
WORD ViewInitX, ViewInitY; /* View initial offsets at startup */
SHORT CursorDX, CursorDY; /* for accelerating pointer movement */
struct KeyMap *KeyMap; /* for the active String Gadget */
SHORT MouseYMinimum; /* magic */
SHORT ErrorX, ErrorY; /* for retaining mouse movement round-off */
struct timerequest IOExcess;
SHORT HoldMinYMouse;
struct MsgPort *WBPort, *iqd_FNKUHDPort;
struct IntuiMessage WBMessage;
struct Screen *HitScreen; /* set by hitUpfront() routine */
/** jimm:dale: 11/25/85, thought we'd take a chance for glory **/
struct SimpleSprite *SimpleSprite;
struct SimpleSprite *AttachedSSprite;
BOOL GotSprite1;
/** jimm: 1/6/86: Intuition contention **/
struct List SemaphoreList; /* chain of the below */
struct SignalSemaphore ISemaphore[NUMILOCKS];
WORD MaxDisplayHeight; /* in interlaced mode: 400 or 512 */
WORD MaxDisplayRow; /* MaxDisplayHeight - 1 */
WORD MaxDisplayWidth; /* copy of GfxBase's NormalDisplayCol */
ULONG Reserved[7]; /* cause one never know, do one? */
#endif /* PRIVATE VALUES */
};
#endif /* INTUITION_INTUITIONBASE_H */